package com.jd.service;


import com.jd.pojo.*;
import com.jd.utils.PagedGridResult;
import com.jd.vo.*;

import java.util.List;

/**
 * 商品业务层
 */
public interface ItemService {

    /**
     * 根据商品id查询详情
     * @param id
     * @return
     */
    public Item queryItemById(String id);


    /**
     * 根据商品id查询商品图片列表
     * @param itemId
     * @return
     */
    public List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品id查询商品规格
     * @param itemId
     * @return
     */
    public List<ItemsSpec> queryItemSpecList(String itemId);


    /**
     * 根据商品id查询商品参数
     * @param itemId
     * @return
     */
    public ItemsParam queryItemParam(String itemId);


    /**
     * 根据商品id查询商品的评价等级数量
     * @param itemId
     * @return
     */
    public CommentLevelCountsVO queryCommentCount(String itemId);


    /**
     * 根据商品id查询商品的评价(分页)
     * @param itemId
     * @param level
     * @return
     */
    public PagedGridResult queryPageComments(String itemId, Integer level,
                                             Integer page, Integer pageSize);

    /**
         搜索商品列表
     * @param keywords
     * @param sort
     * @return
             */
    public PagedGridResult searchItems(String keywords, String sort,
                                             Integer page, Integer pageSize);



    /**
      根据分类id搜索商品列表
     * @param catId
     * @param sort
     * @return
     */
    public PagedGridResult searchItems(Integer catId, String sort,
                                       Integer page, Integer pageSize);


    /**
     * 根据规格ids查询最新的购物车中商品数据（用于渲染购物车中的商品数据）
     * @param specIds
     * @return
     */
    public List<ShopcartVO> queryItemsBySpecIds(String specIds);


    /**
     * 根据商品规格id获取规格对象
     * @param specId
     * @return
     */
    public ItemsSpec   queryItemSpecById(String specId);


    /**
     * 根据商品id获得商品图片主图url
     * @param itemId
     * @return
     */
    public String queryItemMainImgById(String itemId);


    /**
     * 减少库存
     * @param specId
     * @param buyCounts
     */
    public void deceaseItemSpecStock(String specId,int buyCounts);
}




